import request from '@/utils/request'

/**
 * 上传视频文件
 * @param {FormData} formData - 包含视频文件的FormData
 * @returns {Promise} 响应结果
 */
export function uploadVideoFile(formData) {
  return request({
    url: '/upload/video',
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    },
    timeout: 60000 // 60秒超时，因为视频文件较大
  })
}

/**
 * 上传图片文件
 * @param {FormData} formData - 包含图片文件的FormData
 * @returns {Promise} 响应结果
 */
export function uploadImageFile(formData) {
  return request({
    url: '/upload/image',
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    },
    timeout: 30000 // 30秒超时
  })
}

/**
 * 批量上传文件（视频+封面）
 * @param {FormData} formData - 包含视频和封面文件的FormData
 * @returns {Promise} 响应结果
 */
export function uploadBatchFiles(formData) {
  return request({
    url: '/upload/batch',
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    },
    timeout: 60000 // 60秒超时
  })
}

/**
 * 获取推荐视频列表
 * @param {Object} params - 查询参数
 * @returns {Promise} 响应结果
 */
export function getRecommendVideos(params) {
  return request({
    url: '/video/recommend',
    method: 'get',
    params
  })
}

/**
 * 获取指定用户的视频列表
 * @param {number} userId - 用户ID
 * @param {Object} params - 查询参数
 * @returns {Promise} 响应结果
 */
export function getUserVideos(userId, params) {
  return request({
    url: `/video/user/${userId}`,
    method: 'get',
    params
  })
}

/**
 * 获取我的视频列表
 * @param {Object} params - 查询参数
 * @returns {Promise} 响应结果
 */
export function getMyVideos(params) {
  return request({
    url: '/video/my',
    method: 'get',
    params
  })
}

/**
 * 发布视频
 * @param {Object} data - 视频数据
 * @returns {Promise} 响应结果
 */
export function publishVideo(data) {
  return request({
    url: '/video/publish',
    method: 'post',
    data
  })
}

/**
 * 删除视频
 * @param {number} videoId - 视频ID
 * @returns {Promise} 响应结果
 */
export function deleteVideo(videoId) {
  return request({
    url: `/video/${videoId}`,
    method: 'delete'
  })
}

/**
 * 点赞/取消点赞视频
 * @param {number} videoId - 视频ID
 * @returns {Promise} 响应结果
 */
export function toggleLike(videoId) {
  return request({
    url: `/video/${videoId}/like`,
    method: 'post'
  })
}

/**
 * 记录视频观看
 * @param {number} videoId - 视频ID
 * @returns {Promise} 响应结果
 */
export function recordView(videoId) {
  return request({
    url: `/video/${videoId}/view`,
    method: 'post'
  })
}

/**
 * 获取上一个视频
 * @param {number} videoId - 当前视频ID
 * @returns {Promise} 响应结果
 */
export function getPreviousVideo(videoId) {
  return request({
    url: `/video/${videoId}/previous`,
    method: 'get'
  })
}

/**
 * 获取下一个视频
 * @param {number} videoId - 当前视频ID
 * @returns {Promise} 响应结果
 */
export function getNextVideo(videoId) {
  return request({
    url: `/video/${videoId}/next`,
    method: 'get'
  })
}

/**
 * 获取视频详情
 * @param {number} videoId - 视频ID
 * @returns {Promise} 响应结果
 */
export function getVideoDetail(videoId) {
  return request({
    url: `/video/${videoId}`,
    method: 'get'
  })
}

/**
 * 点赞/取消点赞视频 (别名)
 * @param {number} videoId - 视频ID
 * @returns {Promise} 响应结果
 */
export const likeVideo = toggleLike 